package com.zjsru.plan2024.oneday;

import java.util.Arrays;

/**
 * 3254. 长度为 K 的子数组的能量值 I
 *
 * @Author: cookLee
 * @Date: 2024-11-06
 */
public class ResultsArray {

    /**
     * 主
     * \
     * 输入：nums = [1,2,3,4,3,2,5], k = 3
     * 输出：[3,4,-1,-1,-1]
     * 解释：
     * nums 中总共有 5 个长度为 3 的子数组：
     * [1, 2, 3] 中最大元素为 3 。
     * [2, 3, 4] 中最大元素为 4 。
     * [3, 4, 3] 中元素 不是 连续的。
     * [4, 3, 2] 中元素 不是 上升的。
     * [3, 2, 5] 中元素 不是 连续的。
     * \
     *
     * @param args args
     */
    public static void main(String[] args) {
        ResultsArray resultsArray = new ResultsArray();
        int[] nums = new int[]{1, 2, 3, 4, 3, 2, 5};
        int k = 3;
        System.out.println(resultsArray.resultsArray2(nums, k));
    }

    /**
     * 结果数组
     *
     * @param nums nums
     * @param k    k
     * @return {@link int[]}
     */
    public int[] resultsArray(int[] nums, int k) {
        int len = nums.length;
        //返回长度按照k的值决定
        int[] ans = new int[len - k + 1];
        Arrays.fill(ans, -1);
        for (int i = 0; i <= len - k; i++) {
            boolean raise = true;
            for (int j = i + 1; j < i + k; j++) {
                if (nums[j] - nums[j - 1] != 1) {
                    raise = false;
                    break;
                }
            }
            if (raise) {
                ans[i] = nums[i + k - 1];
            }
        }
        return ans;
    }

    public int[] resultsArray2(int[] nums, int k) {
        int len = nums.length;
        //返回长度按照k的值决定
        int[] ans = new int[len - k + 1];
        Arrays.fill(ans, -1);
        int count = 0;
        for (int i = 0; i < len - k; i++) {
            //==0说明初始化的数据，==1是连续数组的基本长度，要么是数组内递增
            count = i == 0 || nums[i] == nums[i - 1] + 1 ? count + 1 : 1;
            //count>=k满足k内递增的范围
            if (count >= k) {
                ans[i - k + 1] = nums[i];
            }
        }
        return ans;
    }

}
